﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace BL.BetterControls
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:_ZurbTab runat=server></{0}:_ZurbTab>")
]
    public class _ZurbTab : PlaceHolder
    {


        public int ActiveIndex { get { return ViewState["ActiveIndex"] != null ? (int)ViewState["ActiveIndex"] : 0; } set { ViewState["ActiveIndex"] = value; } }

        private HtmlGenericControl dl = new HtmlGenericControl("dl");
        //private HtmlGenericControl ul = new HtmlGenericControl("ul");
        private HiddenField hidden = new HiddenField();

        //private int tabIndex = 0;




        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            hidden.ID = this.ID + "_tabIndex";
            dl.Attributes["class"] = "tabs";
           // ul.Attributes["class"] = "tabs-content";

            this.Controls.Add(hidden);
            this.Controls.AddAt(0,dl);

        }

        protected override void LoadViewState(object savedState)
        {
            base.LoadViewState(savedState);

            hidden.Value = ActiveIndex.ToString();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);



            if(hidden.Value != "")
            ActiveIndex = int.Parse(hidden.Value);

            

            //foreach (Control control in this.Controls)
            //{
            //    if (control.Visible)
            //    {

            //        if (control is _ZurbTabItem)
            //        {
            //            HtmlGenericControl li = new HtmlGenericControl("li");
            //            HtmlGenericControl dd = new HtmlGenericControl("dd");
            //            HtmlGenericControl tablink = new HtmlGenericControl("a");
            //            tablink.InnerText = ((_ZurbTabItem)control).TabText;
            //            tablink.Attributes["href"] = "#" + this.ID + "_" + tabIndex.ToString();

            //            li.ID = "tab" + tabIndex.ToString() + "Tab";


            //            if (tabIndex == ActiveIndex)
            //            {
            //                li.Attributes["class"] = "active";
            //                dd.Attributes["class"] = "active";
            //            }
            //            else
            //            {
            //                li.Attributes.Remove("class");
            //            }

            //            while (control.Controls.Count > 0)
            //            {
                            
            //                li.Controls.Add(control.Controls[0]);
                            
            //            }

            //            ul.Controls.Add(li);

            //            tablink.InnerText = ((_ZurbTabItem)control).TabText;
            //            tablink.Attributes["href"] = "#" + li.ClientID.Substring(0, li.ClientID.Length - 3);
            //            tablink.ID = li.ClientID.Substring(0, li.ClientID.Length - 3);
            //            tablink.Attributes["onClick"] = string.Format("$(\"#{0}\").val({1});", hidden.ClientID, tabIndex);


            //            dd.Controls.Add(tablink);
            //            dl.Controls.Add(dd);

            //            //Skum grej att länken fick en style efter att dd lagts till dl?
            //            tablink.Attributes.Remove("style");

            //            tabIndex += 1;
            //        }
            //    }
            //}


            //for (int i = 0; i < Controls.Count; i++)
            //{
            //    if (Controls[i] is _ZurbTabItem)
            //    {
            //        base.Controls.Remove(Controls[i]);
            //    }

            //}
        }

        public bool AddTab(_ZurbTabItem tabItem)
        {
            bool active = false;

            HtmlGenericControl dd = new HtmlGenericControl("dd");
            HtmlGenericControl tablink = new HtmlGenericControl("a");

            tablink.InnerText = tabItem.TabText;
            tablink.Attributes["href"] = "#" + tabItem.ClientID.Substring(0, tabItem.ClientID.Length - 3);
            tablink.ID = tabItem.ClientID.Substring(0, tabItem.ClientID.Length - 3);
            tablink.Attributes["onClick"] = string.Format("$(\"#{0}\").val({1});", hidden.ClientID, dl.Controls.Count);

            if (dl.Controls.Count == ActiveIndex)
            {
                dd.Attributes["class"] = "active";
                active = true;
            }

            dd.Controls.Add(tablink);
            dl.Controls.Add(dd);

            //Skum grej att länken fick en style efter att dd lagts till dl?
            tablink.Attributes.Remove("style");
            return active;

        }

        //protected override void CreateChildControls()
        //{
           
            
        //    base.CreateChildControls();

        //    foreach (Control control in this.Controls)
        //    {
        //        if (control.Visible)
        //        {

        //            if (control is _ZurbTabItem)
        //            {
        //                HtmlGenericControl li = new HtmlGenericControl("li");
        //                HtmlGenericControl dd = new HtmlGenericControl("dd");
        //                HtmlGenericControl tablink = new HtmlGenericControl("a");
        //                tablink.InnerText = ((_ZurbTabItem)control).TabText;
        //                tablink.Attributes["href"] = "#" + this.ID + "_" + tabIndex.ToString();

        //                li.ID = "tab" + tabIndex.ToString() + "Tab";


        //                if (tabIndex == ActiveIndex)
        //                {
        //                    li.Attributes["class"] = "active";
        //                    dd.Attributes["class"] = "active";
        //                }
        //                else
        //                {
        //                    li.Attributes.Remove("class");
        //                }

        //                while (control.Controls.Count > 0)
        //                {

        //                    li.Controls.Add(control.Controls[0]);

        //                }

        //                ul.Controls.Add(li);

        //                tablink.InnerText = ((_ZurbTabItem)control).TabText;
        //                tablink.Attributes["href"] = "#" + li.ClientID.Substring(0, li.ClientID.Length - 3);
        //                tablink.ID = li.ClientID.Substring(0, li.ClientID.Length - 3);
        //                tablink.Attributes["onClick"] = string.Format("$(\"#{0}\").val({1});", hidden.ClientID, tabIndex);


        //                dd.Controls.Add(tablink);
        //                dl.Controls.Add(dd);

        //                //Skum grej att länken fick en style efter att dd lagts till dl?
        //                tablink.Attributes.Remove("style");

        //                tabIndex += 1;
        //            }
        //        }
        //    }

        //}


        protected override void OnPreRender(EventArgs e)
        {
            
            base.OnPreRender(e);
        }








    }
}
